# 1. 变量声明与数据类型
# 变量是用来存储数据的容器，可以赋予不同的值。
# Python 是动态类型语言，变量不需要声明类型。

# 整数
def my_int():
    x = 10
    print(f"x 是整数 {x}, 类型：{type(x)}")

# 浮点数
def my_float():
    x = 3.14
    print(f"x 是浮点数 {x}, 类型：{type(x)}")

# 字符串
def my_str():
    name = "Alice"
    print(f"name 是 {name}, 类型：{type(name)}")

# 列表（list）
def my_list():
    fruits = ["apple", "banana", "cherry"]
    print(f"fruits 是列表：{fruits}, 类型：{type(fruits)}")

# 元组（Tuple）
def my_tuple():
    scores = (10, 20)
    print(f"scores是元组：{scores}, 类型：{type(scores)}")

# 字典（Dictionary）
def my_dict():
    person = {"name": "zhangsan", "age": 18}
    print(f"person是字典：{person}, 类型：{type(person)}")

# 集合（Set）
def my_set():
    nums = {1, 2, 3, 4, 5}
    print(f"nums 是集合：{nums}, 类型：{type(nums)}")

# 2. 类型转换
# Python 提供了内置的类型转换函数，可以在不同类型之间进行转换。

# 整数转浮点数
int_to_float = float(x)
print(f"将整数 x 转换为浮点数: {int_to_float}, 类型: {type(int_to_float)}")

# 字符串转整数
str_to_int = int("123")
print(f"将字符串 '123' 转换为整数: {str_to_int}, 类型: {type(str_to_int)}")

# 列表转元组
list_to_tuple = tuple(fruits)
print(f"将列表 fruits 转换为元组: {list_to_tuple}, 类型: {type(list_to_tuple)}")

# 3. 动态类型
# 在 Python 中，变量的类型是动态的，意味着可以在不同的时刻赋予不同类型的值。
x = "Hello"  # x 现在是字符串
print(f"x 现在是字符串: {x}, 类型: {type(x)}")

x = 100  # x 现在是整数
print(f"x 现在是整数: {x}, 类型: {type(x)}")

# 4. 布尔类型（Boolean）
is_valid = True
print(f"is_valid 是布尔类型: {is_valid}, 类型: {type(is_valid)}")

# 5. 使用 type() 检查类型
print(f"fruits 是 {type(fruits)} 类型")
print(f"person['age'] 是 {type(person['age'])} 类型")

# 6. 常见运算
# 可以对不同的数据类型进行运算，例如对整数和浮点数进行加法。
sum_result = x + y  # 整数与浮点数相加
print(f"整数 x 与浮点数 y 相加: {sum_result}, 类型: {type(sum_result)}")

# 字符串与整数运算（注意字符串和数字不能直接相加）
# 通过转换数据类型实现
str_and_int = name + str(x)  # 将整数 x 转换为字符串与 name 拼接
print(f"字符串与整数拼接: {str_and_int}")

if __name__ == "__main__":
    # my_int()
    # my_float()
    # pass
    # my_str()
    # my_list()
    # my_tuple()
    # my_dict()
    my_set()

# 代码讲解：
# 1. 变量声明与数据类型：
#   ○ 我们首先定义了几种基本数据类型的变量，包括整数、浮点数、字符串、列表、元组、字典和集合。
#   ○ 使用 type() 函数来查看每个变量的类型。
# 2. 类型转换：
#   ○ 介绍了如何使用内置的转换函数（如 float(), int(), tuple() 等）将一种类型转换为另一种类型。
# 3. 动态类型：
#   ○ 演示了 Python 中的动态类型特性，变量的类型可以在不同的时刻更改。例如，x 可以从字符串转换为整数。
# 4. 布尔类型：
#   ○ 布尔值 True 和 False 用于逻辑判断，属于 Python 的基本数据类型。
# 5. 常见运算：
#   ○ 演示了如何进行基本的加法运算，并且展示了如何将不同类型的数据（如整数和字符串）进行运算。